package com.cy.pj.arithmetic.controller;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sun.misc.Request;

@RestController
public class ArithmeticController {
    @RequestMapping("/doCompute/{n1}/{n2}")
    public String doCompute(@PathVariable Integer n1,@PathVariable Integer n2){
       try {
           Integer result=n1/n2;
           return "return is"+result;
       }catch (ArithmeticException e){
           return "do compute error,cause by"+e.getMessage();
       }//try{}catch{}我们在项目中通常会认为模板代码
        //将来在项目中不建议出现大量重复的模板代码

    }
    @RequestMapping("/doCompute02/{n1}/{n2}")
    public String doCompute02(@PathVariable Integer n1,@PathVariable Integer n2){

            Integer result=n1/n2;
            //如上语句出现了算数以后,此异常会抛给谁?调用方是谁?DispathcherServlet
            return "return is"+result;
}

    /**
     * 注解描述的方法为逻辑控制层异常处理方法,此注解内部
     * 定义的异常类型,为异常处理方法可以处理的异常类型
     * 其中,异常处理方法参数中的异常类型应该与@ExceptionHandleer注解中定义的异常类型
     * 一直或者是@ExceptionHandler注解中定义的异常类型的父类类型
     * @param e 为异常处理方法捕获到的异常
     * @return
     */
//    @ExceptionHandler(ArithmeticException.class)
//    public String doHandleArithmeticException(ArithmeticException e){
//      //记录日志
//       return "异常信息"+e.getMessage();
//    }//这个异常处理方法,可以处理这个方法所在类的所有算数异常

}
